﻿using Entity;
using System;
using System.Collections.Generic;

namespace IService
{
    public interface INumberingRuleService
    {
        // 根据目标表单名称获取规则
        NumberingRule GetByTargetFormName(string targetFormName);

        // 获取最大流水号
        int GetMaxSerialNumber(string target_form, string number_prefix);

        // 更新流水号
        int UpdateSerialNumber(string target_form, string number_prefix, int newSerialNumber);

        // 多条件分页查询
        PaginationResult<NumberingRule> GetByConditions(NumberingRuleQueryParams queryParams);

        // 根据ID获取规则
        NumberingRule GetById(int rule_id);

        // 保存规则（新增/更新）- 确保步长和流水号被正确保存
        int SaveRule(NumberingRule rule, string currentUser);

        List<NumberingRule> GetByIds(List<int> ids);

        // 生成业务单据号 - 基于最新规则
        string GenerateBusinessNumber(string targetFormName, string operatorName);

        // 生成业务单据号（带临时步长）
        string GenerateBusinessNumber(string targetFormName, string operatorName, int tempStep);

        // 生成业务单据号（指定流水号）
        string GenerateBusinessNumber(string targetFormName, string operatorName, int? specificSerialNumber, int? tempStep = null);

        // 同时添加目标表单和编号规则
        int AddTargetAndRule(TargetForm targetForm, NumberingRule numberingRule, string currentUser);

        // 删除编号规则
        bool DeleteRule(int rule_id, string currentUser);
        int GetRuleIdByTargetId(int targetId);
        string GenerateBusinessNumber(int ruleId, string currentUser);
      
    }
}
